package com.wbxqy;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Collections;

public class CodeGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/carmanagementsystem?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";
        String author = "wbxqy";
        String outputDir = "F:\\.desktop\\wb\\S831\\backend\\car_management_system\\src\\main\\java";
        String basePackage = "com";
        String moduleName = "wbxqy";
        String mapperLocation = "F:\\.desktop\\wb\\S831\\backend\\car_management_system\\src\\main\\resources\\mapper" + moduleName;
//        String tableName = "t_feedback_wbxqy,t_department_wbxqy,t_rating_wbxqy,t_statistics_wbxqy,t_trip_wbxqy,t_car_record_wbxqy,t_car_wbxqy,t_user_wbxqy,t_car_request_wbxqy";
        String tableName = "t_car_record_wbxqy";
        String tablePrefix = "t_";  //表的前缀
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            //.fileOverride() 覆盖已生成文件 建议不要覆盖
                            .outputDir(outputDir); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(basePackage) // 设置父包名
                            .moduleName(moduleName) // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, mapperLocation)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tableName) // 设置需要生成的表名
                            //设置过滤表后缀
                            .addTableSuffix("wbxqy")
                            .addTablePrefix(tablePrefix) // 设置过滤表前缀
                            .entityBuilder()
                            .enableLombok() // 开启 lombok 模式
                            .addTableFills(new Column("create_time_zzxcsm", FieldFill.INSERT)) // 自动填充字段
                            .addTableFills(new Column("update_time_zzxcsm", FieldFill.INSERT_UPDATE)) // 自动填充字段
                            .controllerBuilder() // 设置controller层相关配置
                            .enableRestStyle() // 开启rest风格

                    ;
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}